From 57ad8645a90aff77fd8c803d5cb27c213b5671aa Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 10 Jan 2006 15:28:41 +0100 Subject: [PATCH] Proactively check for NULL strings passed into xc_linx_build. Either do the right thing or return error if detected. A NULL cmdline, for example, would currently generate a segfault. Signed-off-by: Ben Thomas --- tools/libxc/xc_linux_build.c | 7 +++++-- tools/libxc/xg_private.c | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/libxc/xc_linux_build.c b/tools/libxc/xc_linux_build.c index a48ecd45bd..8d119717f2 100644 --- a/tools/libxc/xc_linux_build.c +++ b/tools/libxc/xc_linux_build.c @@ -693,8 +693,11 @@ static int setup_guest(int xc_handle, start_info->mod_start = vinitrd_start; start_info->mod_len = initrd_len; } - strncpy((char *)start_info->cmd_line, cmdline, MAX_GUEST_CMDLINE); - start_info->cmd_line[MAX_GUEST_CMDLINE-1] = '\0'; + if ( cmdline != NULL ) + { + strncpy((char *)start_info->cmd_line, cmdline, MAX_GUEST_CMDLINE); + start_info->cmd_line[MAX_GUEST_CMDLINE-1] = '\0'; + } munmap(start_info, PAGE_SIZE); /* shared_info page starts its life empty. */ diff --git a/tools/libxc/xg_private.c b/tools/libxc/xg_private.c index 355ba1400d..982d8256be 100644 --- a/tools/libxc/xg_private.c +++ b/tools/libxc/xg_private.c @@ -17,6 +17,9 @@ char *xc_read_kernel_image(const char *filename, unsigned long *size) char *image = NULL; unsigned int bytes; + if ( filename == NULL ) + goto out; + if ( (kernel_fd = open(filename, O_RDONLY)) < 0 ) { PERROR("Could not open kernel image"); -- 2.30.2